home *** CD-ROM | disk | FTP | other *** search
- TinyGL (c) 1997-2002 Fabrice Bellard.
- TinyGL AmigaDE (c) 2002 Ruben Monteiro.
-
-
- General Description:
- --------------------
-
- TinyGL is intended to be a very small implementation of a subset of
- OpenGL* for embedded systems or games.
-
- The main features of TinyGL are:
-
- - Header compatible with OpenGL (the headers are adapted from the very good
- Mesa by Brian Paul et al.)
-
- - Zlib-like licence for easy integration in commercial designs (read
- the LICENCE file).
-
- - GLX / Wiggle like API (IGL) to use it with AmigaDE.
-
- - GLUT subset for easy development of demos.
-
- - OpenGL like lightening.
-
- - Complete OpenGL selection mode handling for object picking.
-
- - 16 bit Z buffer. 16/24/32 bit RGB rendering. High speed dithering to
- paletted 8 bits if needed. High speed conversion to 24 bit packed
- pixel or 32 bit RGBA if needed.
-
- - Fast Gouraud shadding optimized for 16 bit RGB.
-
- - Fast texture mapping capabilities, with perspective correction and
- texture objects.
-
- - 32 bit float only arithmetic.
-
- - Very small: compiled library size is around 80Kb under AmigaDE. The file
- src/zfeatures.h can be used to remove some unused features from
- TinyGL.
-
- - C sources for GCC on 32/64 bit architectures. It has been tested
- succesfully on x86-Linux and sparc-Solaris.
-
-
-
- Architecture:
- -------------
-
- TinyGL is made up four main modules:
-
- - Mathematical routines (zmath).
-
- - OpenGL-like emulation (zgl).
-
- - Z buffer and rasterisation (zbuffer).
-
- - IGL interface.
-
-
- Notes - limitations:
- --------------------
-
- - See the file 'LIMITATIONS' to see the current functions supported by the API.
-
- - The multithreading could be easily implemented since no global state
- is maintainted. The library gets the current context with a function
- which can be modified.
-
- - The lightening is not very fast. I supposed that in most games the
- lightening is computed by the 3D engine.
-
- - Some changes are needed for 64 bit pointers for the handling of
- arrays of float with the GLParam union.
-
- - No user clipping planes are supported.
-
- - No color index mode (no longer useful !)
-
- - The mipmapping is not implemented.
-
- - The perspecture correction in the mapping code does not use W but
- 1/Z. In any 'normal scene' it should work.
-
- - The resizing of the viewport in IGL ensures that the width and
- the height are multiples of 4. This is not optimal because some pixels
- of the window may not be refreshed.
-
- Why ?
- -----
-
- TinyGL was developped as a student project for a Virtual Reality
- network system called VReng (see the VReng home page at
- http://www-inf.enst.fr/vreng).
-
- At that time (January 1997), my initial project was to write my own 3D
- rasterizer based on some old sources I wrote. But I realized that it
- would be better to use OpenGL to work on any platform. My problem was
- that I wanted to use texture mapping which was (and is still) quite
- slower on many software OpenGL implementation. I could have modified
- Mesa to suit my needs, but I really wanted to use my old sources for
- that project.
-
- I finally decided to use the same syntax as OpenGL but with my own
- libraries, thinking that later it could ease the porting of VReng to
- OpenGL.
-
- Now VReng is at last compatible with OpenGL, and I managed to patch
- TinyGL so that VReng can still work with it without any modifications.
-
- Since TinyGL may be useful for some people, especially in the world of
- embedded designs, I decided to release it 'as is', otherwise, it would
- have been lost on my hard disk !
-
- ------------------------------------------------------------------------------
- * OpenGL(R) is a registered trademark of Silicon Graphics, Inc.
- ------------------------------------------------------------------------------
- Fabrice Bellard.
-